/* entity */
import Field from '@model/entity/Field'
/* vue */
import { EmitEvent } from '@model/VC'

export enum useFormEventEnum {
  Input = 'input',
  Update = 'update'
}

/**
 * @description 表单组件数据更新提交事件方法
 * @param {EmitEvent} emit 提交事件方法
 * @param {Field} field 数据更改的字段
 * @param {Record<string, any>} newValue 数据变化后的新值
 * @param {Record<string, any>} oldValue 数据变化前的旧值
 * @return {void}
 */
export function useFormComponentUpdatedEmitEvent<NewValueType extends Record<string, any>, OldValueType extends Record<string, any>>(
  emit: EmitEvent, field: Field, newValue: NewValueType, oldValue?: OldValueType
): void {
  emit(useFormEventEnum.Update, { newValue, field, oldValue })
  emit(useFormEventEnum.Input, newValue)
}
